In today's information age, communication networks are used to carry vast amounts of information among network users. These communication networks include various types of networking devices, such as switches and routers. The networking devices typically include multiple ports that are interconnected over a switching/routing fabric. An information packet received over an ingress (input) port may be forwarded to an egress (output) port over the fabric, for example, based upon an address or label in the packet.
Congestion can occur at various locations with a networking device. For example, congestion can occur at the ingress ports, at the egress ports, in the switching/routing fabric, and at other locations within the networking device (e.g., backplane). This congestion can lead to dropped packets, which in turn can result in a broken service level agreement. Such a networking device cannot provide a reliable quality of service (QoS).
A “backpressure” mechanism can be used to provide a more reliable QoS in such a networking device. In a “backpressure” mechanism, congestion information is propagated back from the egress queues to the switching/routing fabric and further back to the ingress logic (PIDs). This “backpressure” mechanism requires a significant amount of information, such as a port and virtual lane (VL) identifier for each congested queue, as well as a significant change in the line card and switch fabric architectures. For these reasons, a “backpressure” mechanism is inefficient and difficult to implement.